package com.AdvancedDemos.FileAndIO.使用IO框架;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class 使用Apache_Commons_io框架读写复制文件 {
    public static void main(String[] args) throws IOException {
        /**
         * 什么是框架?
         * 解决某类问题,编写的一套类、接口等，可以理解成一个半成品，大多框架都是第三方研发的。
         * 好处:在框架的基础上开发，可以得到优秀的软件架构，并能提高开发效率
         * 框架的形式:一般是把类、接口等编译成class形式，再压缩成一个.jar结尾的文件发行出去。
         *
         * 什么是IO框架?
         * 封装了Java提供的对文件、数据进行操作的代码，对外提供了更简单的方式来对文件进行操作，对数据进行读写等。
         */


        /**
         * Commons-io是apache开源基金组织提供的一组有关IO操作的小框架,目的是提高IO流的开发效率。
         *
         * 使用阿帕奇Apache公司提供的IO框架,commons-io.jar
         *
         * 导入commons-io-2.11.0.jar框架到项目中去:
         * ① 在项目中创建一个文件夹:lib
         * ② 将commons-io-2.6.jar文件复制到lib文件夹
         * ③ 在jar文件上点右键，选择Add as Library -> 选择模块或者项目级别 -> 点击OK
         * ④ 在类中导包使用
         *
         * FileUtils类提供的部分方法展示:
         * public static void copyFile(File srcFile，File destFile) --- 复制文件
         * public static void copyDirectory(File srcDir，File destDir) --- 复制文件夹
         * public static void deleteDirectory(File directory) --- 删除文件夹
         * public static string readFileTostring(File file，string encoding) --- 读数据
         * public static void writeStringToFile(File file，string data，String charname, boolean append) --- 写数据
         *
         * IOUtils类提供的部分方法展示:
         * public static int copy(Inputstream inputstream，Outputstream outputstream) --- 复制文件
         * public static iht copy( Reader reader， Writer writer) --- 复制文件
         * public static void write(String data,OutputStream output，String charsetName) --- 写数据
         */

        /**
         * 1. public static void copyFile(File srcFile，File destFile) --- 复制文件
         */
        FileUtils.copyFile(new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\original.txt"), new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\copy.txt"));
        System.out.println("文件拷贝成功!");

        /**
         * 2. public static void copyDirectory(File srcDir，File destDir) --- 复制文件夹
         */
        FileUtils.copyDirectory(new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\a"), new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\b"));
        System.out.println("文件夹拷贝成功!");

        /**
         * 3. public static void deleteDirectory(File directory) --- 删除文件夹
         */
        FileUtils.deleteDirectory(new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\b"));
        System.out.println("删除文件夹成功!");


        /**
         * 4. public static void writeStringToFile(File file，string data，String charname, boolean append) --- 写数据
         */
        FileUtils.writeStringToFile(new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\original.txt"), "Helloworld", "UTF-8", false);
        System.out.println("写出文件成功!");


        /**
         * 5. public static string readFileTostring(File file，string encoding) --- 读数据
         */
        String s = FileUtils.readFileToString(new File("helloworld\\src\\com\\AdvancedDemos\\FileAndIO\\使用IO框架\\original.txt"), "UTF-8");
        System.out.println("读取的文件内容:" + s);

    }
}
